package com.jin.service;

import com.jin.model.Spu;
import com.jin.repository.SpuRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class SpuService {
    @Autowired
    SpuRepository spuRepository;
    public Spu getSpu(Long id){
        return spuRepository.findOneById(id);
    }

    //获取一组最新的spu数据
    //Page方法最终返回的是一组泛型的结果：Page<T> findAll(Pageable var1);
    public Page<Spu> getLatestPagingSpu(Integer pageNum, Integer size){
        //使用分页对象进行分页,并且排序,通过数据库表中的createTime字段进行倒序排序，大的排前面
        //当Page是0的时候那么就是代表第一页，数据库从最新的开始查，如果pageNum+1就会往后错来一页
        Pageable page =  PageRequest.of(pageNum, size, Sort.by("createTime").descending());//可以在pageNum处-1
        return spuRepository.findAll(page);
    }

    public Page<Spu> getByCategory(Long cid,Boolean isRoot,Integer pageNum, Integer size){
        Pageable page = PageRequest.of(pageNum, size);
        //使用jpa带入条件进行查询()
        if (isRoot){
            return spuRepository.findByRootCategoryIdOrderByCreateTimeDesc(cid,page);
        }else {
            return spuRepository.findByCategoryIdOrderByCreateTimeDesc(cid,page);
        }
    }
}
